package com.view;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * 查找与替换
 * @author Administrator
 *
 */
public class Find {
	
	//窗体
	private JFrame jFrame=null;
	
	//查找文本框
	private JTextField findTxt=null;
	
	//替换文本框
	private JTextField replaceTxt=null;
	
	//查找按钮
	private JButton findBtn=null;
	
	//替换按钮
	private JButton replaceBtn=null;
	
	//查找的索引
	private int index=0;
	
	//定义编辑区的文本框
	private JiShiBenView jiShiBen=null;
	
	//构造方法初始化
	public Find(JiShiBenView jiShiBen){
		
		//将传过来的文本框保存
		this.jiShiBen=jiShiBen;
		
		//初始化窗体
		jFrame=new JFrame("查找和替换");
		
		//设置大小
		jFrame.setSize(300, 110);
		
		//设置布局，采用流式布局
		jFrame.setLayout(new FlowLayout());
		
		//实例化查找文本框
		findTxt=new JTextField(15);
		
		//添加
		jFrame.add(findTxt);
		
		//实例化时间监听
		BtnClick btnClick=new BtnClick();
		
		//实例化查找按钮
		findBtn=new JButton("查找");
		findBtn.setActionCommand("find");
		findBtn.addActionListener(btnClick);
		
		
		//添加
		jFrame.add(findBtn);
		
		//实例化替换文本框
		replaceTxt=new JTextField(15);
		
		//添加
		jFrame.add(replaceTxt);
		
		//实例化替换按钮
		replaceBtn=new JButton("替换");
		replaceBtn.setActionCommand("replace");
		replaceBtn.addActionListener(btnClick);
		
		//添加
		jFrame.add(replaceBtn);
		
		
		//设置居中
		jFrame.setLocationRelativeTo(null);
		
		//设置显示
		jFrame.setVisible(true);
	}
	
	//显示界面
	public void show(){
		//设置显示
		jFrame.setVisible(true);
	}
	
	/**
	 * 内部类实现时间的监听
	 * @author Administrator
	 *
	 */
	class BtnClick implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			if(arg0.getActionCommand().equals("find")){
				//获得要查找的内容
				String findStr=findTxt.getText();
				//获得在编辑区的索引
				index=jiShiBen.getTxt().getText().indexOf(findStr, index);
				if(index!=-1){
					jiShiBen.getTxt().setCaretPosition(index);
					jiShiBen.showView();
				}
				index++;
			}
			else if(arg0.getActionCommand().equals("replace")){
				
				//原文本
				String yuanStr=jiShiBen.getTxt().getText();
				
				//目标文本
				String muBiao=findTxt.getText();
				
				//目标内容
				String neiRong=replaceTxt.getText();
				
				//替换
				jiShiBen.getTxt().setText(yuanStr.replace(muBiao, neiRong));
				jiShiBen.showView();
			}
		}
		
	}

	public int getIndex() {
		return index;
	}

	public void setIndex(int index) {
		this.index = index;
	}
	
	
	
}
